package top.blackr.folivora.common.security;

import cn.dev33.satoken.filter.SaFilterAuthStrategy;
import cn.dev33.satoken.fun.SaFunction;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import top.blackr.folivora.common.core.constants.CommonConstants;

/**
 * 自定义认证逻辑
 */
@Slf4j
@Component
public class FilterAuthStrategy implements SaFilterAuthStrategy {

    @Override
    public void run(Object r) {
        log.debug("---------- 进入Sa-Token全局认证 -----------");
        // 登录认证 -- 拦截所有路由，并排除登录地址 用于开放登录
        SaRouter.match("/**", CommonConstants.LOGIN_URL, auth());
    }

    /**
     * 提成方法，方便扩展
     *
     * @return this
     */
    private SaFunction auth() {
        // 更多拦截处理方式，请参考“路由拦截式鉴权”章节 */
        return StpUtil::checkLogin;
    }
}
